<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<meta name="keywords" content="architecture" />
	<meta name="description" content="architecture" />
	<!-- 网页标签标题 -->
	<title>architecture</title>
	<link rel="shortcut icon" href="/img/nacos.ico"/>
	<link rel="stylesheet" href="/build/documentation.css" />
</head>
<body>
	<div id="root"><div class="documentation-page" data-reactroot="" data-reactid="1" data-react-checksum="1994028242"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/nacos_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-toggle" src="/img/menu_gray.png" data-reactid="8"/><ul data-reactid="9"><li class="menu-item menu-item-normal" data-reactid="10"><a href="/en-us/index.html" data-reactid="11">HOME</a></li><li class="menu-item menu-item-normal menu-item-normal-active" data-reactid="12"><a href="/en-us/docs/quick-start.html" data-reactid="13">DOCS</a></li><li class="menu-item menu-item-normal" data-reactid="14"><a href="/en-us/blog" data-reactid="15">BLOG</a></li><li class="menu-item menu-item-normal" data-reactid="16"><a href="/en-us/community" data-reactid="17">COMMUNITY</a></li><li class="menu-item menu-item-normal" data-reactid="18"><a href="http://console.nacos.io/nacos/index.html" data-reactid="19">DEMO-CONSOLE</a></li></ul></div></div></header><div class="bar" data-reactid="20"><div class="bar-body" data-reactid="21"><img src="/img/docs.png" class="front-img" data-reactid="22"/><div class="bar-title" data-reactid="23"><span data-reactid="24">Documentation</span><div class="bone bone-light" data-reactid="25"></div></div><img src="/img/docs.png" class="back-img" data-reactid="26"/></div></div><section class="content-section" data-reactid="27"><div class="content-body" data-reactid="28"><div class="sidemenu" data-reactid="29"><div class="sidemenu-toggle" data-reactid="30"><img src="https://img.alicdn.com/tfs/TB1E6apXHGYBuNjy0FoXXciBFXa-200-200.png" data-reactid="31"/></div><ul data-reactid="32"><li class="menu-item menu-item-level-1" data-reactid="33"><span data-reactid="34">Nacos </span><ul data-reactid="35"><li style="height:144px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="36"><span data-reactid="37"><!-- react-text: 38 -->What is Nacos<!-- /react-text --><img style="transform:rotate(0deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="39"/></span><ul data-reactid="40"><li class="menu-item menu-item-level-3" data-reactid="41"><a href="/en-us/docs/what-is-nacos.html" target="_self" data-reactid="42">What is Nacos</a></li><li class="menu-item menu-item-level-3" data-reactid="43"><a href="/en-us/docs/concepts.html" target="_self" data-reactid="44">Concepts</a></li><li class="menu-item menu-item-level-3" data-reactid="45"><a href="/en-us/docs/architecture.html" target="_self" data-reactid="46">Architecure</a></li></ul></li><li style="height:216px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="47"><span data-reactid="48"><!-- react-text: 49 -->Quick Start<!-- /react-text --><img style="transform:rotate(0deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="50"/></span><ul data-reactid="51"><li class="menu-item menu-item-level-3" data-reactid="52"><a href="/en-us/docs/quick-start.html" target="_self" data-reactid="53">Nacos</a></li><li class="menu-item menu-item-level-3" data-reactid="54"><a href="/en-us/docs/quick-start-spring.html" target="_self" data-reactid="55">Nacos Spring</a></li><li class="menu-item menu-item-level-3" data-reactid="56"><a href="/en-us/docs/quick-start-spring-boot.html" target="_self" data-reactid="57">Nacos Spring Boot</a></li><li class="menu-item menu-item-level-3" data-reactid="58"><a href="/en-us/docs/quick-start-spring-cloud.html" target="_self" data-reactid="59">Nacos Spring Cloud</a></li><li class="menu-item menu-item-level-3" data-reactid="60"><a href="/en-us/docs/quick-start-docker.html" target="_self" data-reactid="61">Nacos Docker</a></li></ul></li><li style="height:180px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="62"><span data-reactid="63"><!-- react-text: 64 -->User Guide<!-- /react-text --><img style="transform:rotate(0deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="65"/></span><ul data-reactid="66"><li class="menu-item menu-item-level-3" data-reactid="67"><a href="/en-us/docs/sdk.html" target="_self" data-reactid="68">Java SDK</a></li><li class="menu-item menu-item-level-3" data-reactid="69"><a href="/en-us/docs/other-language.html" target="_self" data-reactid="70">Other Language</a></li><li class="menu-item menu-item-level-3" data-reactid="71"><a href="/en-us/docs/open-API.html" target="_self" data-reactid="72">Open-API</a></li><li class="menu-item menu-item-level-3" data-reactid="73"><a href="/en-us/docs/nacos-spring.html" target="_self" data-reactid="74">Nacos Spring</a></li></ul></li><li style="height:36px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="75"><span data-reactid="76"><!-- react-text: 77 -->Admin Guide<!-- /react-text --><img style="transform:rotate(-90deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="78"/></span><ul data-reactid="79"><li class="menu-item menu-item-level-3" data-reactid="80"><a href="/en-us/docs/deployment.html" target="_self" data-reactid="81">Deployment Guide</a></li><li class="menu-item menu-item-level-3" data-reactid="82"><a href="/en-us/docs/cluster-mode-quick-start.html" target="_self" data-reactid="83">Cluster Mode Deployment</a></li><li class="menu-item menu-item-level-3" data-reactid="84"><a href="/en-us/docs/managementAPI.html" target="_self" data-reactid="85">Management OpenAPI</a></li><li class="menu-item menu-item-level-3" data-reactid="86"><a href="/en-us/docs/CLI-guide.html" target="_self" data-reactid="87">Nacos Operator CLI Guide</a></li><li class="menu-item menu-item-level-3" data-reactid="88"><a href="/en-us/docs/console-guide.html" target="_self" data-reactid="89">Admin Console Guide</a></li></ul></li><li style="height:36px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="90"><span data-reactid="91"><!-- react-text: 92 -->Contributor Guide<!-- /react-text --><img style="transform:rotate(-90deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="93"/></span><ul data-reactid="94"><li class="menu-item menu-item-level-3" data-reactid="95"><a href="/en-us/docs/contributing.html" target="_self" data-reactid="96">Contribute to Nacos</a></li><li class="menu-item menu-item-level-3" data-reactid="97"><a href="/zh-cn/docs/activity.html" target="_self" data-reactid="98">Nacos Activity</a></li><li class="menu-item menu-item-level-3" data-reactid="99"><a href="/en-us/docs/pull-request.html" target="_self" data-reactid="100">Pull Request Template</a></li><li class="menu-item menu-item-level-3" data-reactid="101"><a href="/en-us/docs/how-to-reporting-bugs.html" target="_self" data-reactid="102">How to reporting bugs</a></li><li class="menu-item menu-item-level-3" data-reactid="103"><a href="/en-us/docs/roadmap.html" target="_self" data-reactid="104">Nacos RoadMap</a></li><li class="menu-item menu-item-level-3" data-reactid="105"><a href="/en-us/docs/use-nacos-with-springcloud.html" target="_self" data-reactid="106">Nacos with SpringCloud</a></li><li class="menu-item menu-item-level-3" data-reactid="107"><a href="/en-us/docs/use-nacos-with-dubbo.html" target="_self" data-reactid="108">Nacos with Dubbo</a></li><li class="menu-item menu-item-level-3" data-reactid="109"><a href="/en-us/docs/use-nacos-with-kubernetes.html" target="_self" data-reactid="110">Nacos with K8s</a></li><li class="menu-item menu-item-level-3" data-reactid="111"><a href="/en-us/docs/use-nacos-with-istio.html" target="_self" data-reactid="112">Nacos with Istio</a></li></ul></li><li style="height:36px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="113"><span data-reactid="114"><!-- react-text: 115 -->Community<!-- /react-text --><img style="transform:rotate(-90deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="116"/></span><ul data-reactid="117"><li class="menu-item menu-item-level-3" data-reactid="118"><a href="/en-us/docs/community.html" target="_self" data-reactid="119">Community</a></li></ul></li></ul></li></ul></div><div class="doc-content markdown-body" data-reactid="120"><h2>Basic Architecture and Concepts</h2>
<p><img src="/img/nacos-Arch.jpg" alt="nacos_arch.jpg"></p>
<ul>
<li>
<p><strong>Service</strong></p>
<p>A software function or a set of software functions (such as the retrieval of specified information or the execution of a set of operations) with the purpose that different clients can be reused for different purposes (for example, through a cross-process network call). Nacos supports almost all types of services:
<a href="https://kubernetes.io/docs/concepts/services-networking/service/">Kubernetes Service</a></p>
</li>
</ul>
<p><a href="https://grpc.io/docs/guides/concepts.html#service-definition">gRPC</a>
<a href="https://dubbo.incubator.apache.org/#/?lang=en-us"> | Dubbo RPC Service</a></p>
<p><a href="https://spring.io/understanding/REST">Spring Cloud RESTful Service</a></p>
<ul>
<li>
<p><strong>Service Registry</strong></p>
<p>The database of services, instances and metadata. Service instances are registered with the service registry on startup and deregistered on shutdown. Clients of the service and/or routers query the service registry to find the available instances of a service. A service registry might invoke a service instances health check API to verify that it is able to handle requests.</p>
</li>
<li>
<p><strong>Service Metadata</strong></p>
<p>Data describing services such as service endpoints, service labels, service version, service instance weights, routing rules, security policies.</p>
</li>
<li>
<p><strong>Service Provider</strong></p>
<p>A process or application which provides reusable and callable services.</p>
</li>
<li>
<p><strong>Service Consumer</strong></p>
<p>A process or application which initiates a call to a service.</p>
</li>
<li>
<p><strong>Configuration</strong></p>
<p>During system development, developers usually extract some parameters or variables that need to be changed from the code and manage them in a separate configuration file. This enables the static system artifacts or deliverables (such as WAR and JAR packages) to fit with the physical operating environment in a better way. Configuration management is generally a part of system deployment, which is executed by the administrator or operation and maintenance personnel. Configuration modification is an effective method to adjust the behavior of a running system.</p>
</li>
<li>
<p><strong>Configuration Management</strong></p>
<p>In the data center, all configuration-related activities such as editing, storage, distribution, change management, history version management, and change audit are collectively referred to as configuration management.</p>
</li>
<li>
<p><strong>Naming Service</strong></p>
<p>Mapping the &quot;names&quot; of all the objects and entities in the distributed system to the associated metadata, for example, <code>ServiceName</code> -&gt; <code>Endpoints\Version etc...</code>, <code>Distributed Lock Name</code> -&gt; <code>Lock Owner/Status Info</code>, <code>DNS Domain Name</code> -&gt; <code>IP List</code>. Service discovery and DNS are the two major scenarios of naming service.</p>
</li>
<li>
<p><strong>Configuration Service</strong></p>
<p>Providing dynamic configuration, service metadata and configuration management for other services or application.</p>
</li>
<li>
<p><strong><a href="./concepts.md">More concepts...</a></strong></p>
</li>
</ul>
<h2>Artifacts, Deployment, and Start Mode</h2>
<p><img src="https://cdn.yuque.com/lark/0/2018/png/15914/1531730742844-e8325932-258b-49b2-9473-8d1199efe20d.png" alt="undefined"></p>
<ul>
<li>
<p><strong>Two Artifacts</strong></p>
<p>Nacos supports both standard Docker images (v0.2.0) and nacos-.zip(tar.gz). You can choose the appropriate build to deploy the Nacos service according to your needs.</p>
</li>
<li>
<p><strong>Two Start Modes</strong></p>
<p>Nacos supports two start modes. you can merging the Service Registry and the Config Center in one process or deploying them in separately cluster.</p>
</li>
<li>
<p><strong>Free Public Cloud Service on Alibaba Cloud</strong></p>
<p>In addition to deploying and launching Nacos services by users themselves, Nacos also supports public cloud. Nacos public cloud service will be free in Alibaba Cloud's commercial service (such as <a href="https://www.aliyun.com/product/acm">ACM</a>, <a href="https://www.aliyun.com/product/edas">EDAS</a>). We also welcome other public cloud providers to offer Nacos public cloud services.</p>
</li>
</ul>
</div></div></section><footer class="footer-container" data-reactid="121"><div class="footer-body" data-reactid="122"><img src="/img/nacos_gray.png" data-reactid="123"/><div class="cols-container" data-reactid="124"><div class="col col-12" data-reactid="125"><h3 data-reactid="126">Vision</h3><p data-reactid="127">By providing an easy-to-use service infrastructure such as dynamic service discovery, service configuration, service sharing and management and etc., Nacos help users better construct, deliver and manage their own service platform, reuse and composite business service faster and deliver value of business innovation more quickly so as to win market for users in the era of cloud native and in all cloud environments, such as private, mixed, or public clouds.</p></div><div class="col col-6" data-reactid="128"><dl data-reactid="129"><dt data-reactid="130">Documentation</dt><dd data-reactid="131"><a href="/en-us/docs/what-is-nacos.html" target="_self" data-reactid="132">Overview</a></dd><dd data-reactid="133"><a href="/en-us/docs/quick-start.html" target="_self" data-reactid="134">Quick start</a></dd><dd data-reactid="135"><a href="/en-us/docs/contributing.html" target="_self" data-reactid="136">Developer guide</a></dd></dl></div><div class="col col-6" data-reactid="137"><dl data-reactid="138"><dt data-reactid="139">Resources</dt><dd data-reactid="140"><a href="/en-us/community/index.html" target="_self" data-reactid="141">Community</a></dd></dl></div></div><div class="copyright" data-reactid="142"><span data-reactid="143">@ 2018 The Nacos Authors | An Alibaba Middleware (Aliware) Project</span></div></div></footer></div></div>
	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
	<script>
		window.rootPath = '';
  </script>
	<script src="/build/documentation.js"></script>
</body>
</html>